The present invention relates generally to the field of computer graphics. More specifically, to graphics rendering systems and methods for creating realistic three-dimensional (3-D) graphical representations.
The use of procedural techniques for three-dimensional texturing (solid texturing), modeling, and shading in computer graphics and animation has grown rapidly over the past decade. It is now possible for three-dimensional objects and shapes created on a personal computer or workstation to be filled in with textures simulating natural materials and natural phenomena. For example, it is now common to display realistic images having textures resembling marble, wood, or stone. Likewise, computer researchers and scientists have successfully simulated natural phenomena such as fog, waves, fire, and clouds for display on a computer screen.
Texturing methods vary the point-to-point surface properties of an object to give the appearance of detail that is not actually present in the geometry. A xe2x80x9ctexturexe2x80x9dxe2x80x94sometimes referred to as a xe2x80x9cpatternxe2x80x9d or xe2x80x9cwallpaperxe2x80x9dxe2x80x94is simply an image that is used as surface covering for objects or shapes created by a graphics program running on a computer. Textures come in many varieties. Examples include bump mapping, which simulate the appearance of surface bumps without actually modifying the geometry of the object; light maps which give the appearance of smooth diffuse lighting; displacement mapping, in which textures are used to move the surface; and solid textures that give consistent textures of all surfaces of an object regardless of distortions of the surface parameter space.
A texture may be explicitly specified by storing all the complex details of the scene or sequence in a bit-map that contains the value of each pixel in the image. This approach obviously requires a large amount of storage space within the computer; but is it well suited for certain representations, such as a reproduction of a famous painting. Alternatively, all of the details of a given texture may be abstracted into a mathematical function or algorithm (i.e., a procedure) that is used to define pixel values. A procedural technique is defined as a code segment or algorithm that specifies some characteristic of computer generated model or effect. A procedural texture, therefore, is an image initially describedxe2x80x94not by the pixel valuesxe2x80x94but by the operation or formula, which may include a pseudo random element, used to create the pixel values.
Procedural textures offer certain advantages over bit-mapped textures. For instance, the storage requirements of a procedural texture are generally independent of the number of pixels. That is, a procedural texture can be stored in a storage space that is several orders of magnitude less than the space required to store a corresponding bit-mapped representation. Procedural textures also provide the power of parametric control (sometimes referred to as database amplification) allowing the user to create a variety of textures that can be evaluated to any desired resolution. Procedural techniques further offer the designer the flexibility of creating completely abstract or purely artistic effects that lack resemblance to natural objects. Techniques for building procedural textures are described in xe2x80x9cTexturing and Modelingxe2x80x9d, Second Edition, (Chapter 2) Ebert et al., Academic Press, London (1998). Various methods of using procedural textures in graphics rendering systems are disclosed in U.S. Pat. Nos.: 5,956,043, 5,949,428, 5,852,443, 5,808,617, and 5,481,669.
Current methods and systems primarily use fixed-sized, pixel-based images for textures. Few rendering applications utilize procedural textures. For instance, rendering applications and plug-ins that are designed for Internet viewing of models usually transmit compressed images. This places significant demands on the bandwidth of the data communications medium. A typical Joint Photographic Expert Group (JPEG) compressed image with dimensions of 512xc3x97512 pixels, for example, requires about 75K bytes. A procedural texture of the same image might only require 3K bytes. Therefore, what is needed is a method and apparatus capable of taking advantage of the benefits offered by procedural textures, with backward compatibility in existing three-dimensional (3D) authoring and rendering applications that rely on traditional pixel-based images for textures.
The present invention covers an apparatus and method of providing textured surfaces for computer-generated images. In accordance with one embodiment of the invented method, a procedural description corresponding to a bit-map representation of a texture is embedded in a hybrid file module that also includes the bit-map representation. The hybrid file module is transmitted to a player over a data communications medium. The procedural description can be extracted from the hybrid and transmitted instead of the whole hybrid file. On the receiving end, the hybrid file is reconstructed by generating a bit-map from the procedural description. Once received, the procedural description is extracted from the hybrid file module. Following extraction, the procedural description is then used to render the texture. Since the hybrid file is also a valid image file, systems not procedural texture aware can simply use the bit-map.